package com.code9xs.mapper;

import com.code9xs.pojo.Role;
import com.code9xs.pojo.User;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

import java.util.List;
import java.util.Map;


@Repository
@Mapper
public interface UserMapper {
    int deleteByPrimaryKey(Integer id);

    int insert(User record);

    int insertSelective(User record);

    User selectByPrimaryKey(Integer id);

    int updateByPrimaryKeySelective(User record);

    int updateByPrimaryKey(User record);

    /**
     * 通过邮箱查找用户
     * email 用户邮箱
     */
    User selectUserByMail(@Param("email") String email);

    /**
     * 通过uid查询用户拥有的角色
     * @param uid
     * @return
     */
    List<Map<String,Object>> selectRoleByUid(@Param("uid") Integer uid);

    /**
     * 通过角色roleId 查询所有拥有该角色的用户
     * @param rid
     * @return
     */
    List<User> selectUserByRoleId(@Param("rid") Integer rid);

    /**
     * 通过用户名查找用户
     * @param username
     * @return
     */
    User selectUserByUsername(@Param("username") String username);

    /**
     * 查询用户是否存在
     * @param email
     * @return
     */
    Integer selectUserIsExistByEmail(@Param("email") String email);

    /**
     * 查询部门下所有成员
     * @param aid
     * @return
     */
    List<User> selectAssociationMembersByAid(@Param("aid") Integer aid);

    /**
     * 分页查询社团成员
     * @param aid
     * @param start
     * @param pageSize
     * @return
     */
    List<Map<String,Object>> selectAssociationPeoplePaginationByAid(@Param("aid")Integer aid, @Param("start")Integer start, @Param("pageSize") Integer pageSize);

    /**
     * 查询所有用户数
     * @return
     */
    int selectAllUserCount();

    List<Map<String,Object>> selectAllUserPagination(@Param("start") Integer start, @Param("pageSize") Integer pageSize);
}